// import { defineConfig } from 'vite'
// import vue from '@vitejs/plugin-vue'
// import { fileURLToPath } from 'node:url'
// import { dirname, resolve } from 'node:path'

// // 由于 package.json 中使用 type: module，需要自己构造 __dirname
// const __filename = fileURLToPath(import.meta.url)
// const __dirname = dirname(__filename)

// // https://vitejs.dev/config/
// export default defineConfig({
//   plugins: [vue()],
//   resolve: {
//     alias: {
//       '@': resolve(__dirname, 'src')
//     }
//   },
//   css: {
//     preprocessorOptions: {
//       scss: {
//         // 让所有 scss 文件自动拥有变量与混入
//         additionalData: '@import "@/assets/styles/variables.scss";'
//       }
//     }
//   },
//   server: {
//     port: 5173,
//     host: '0.0.0.0',
//     strictPort: false,
//     proxy: {
//       // 前端调用 /api/* 时转发到后端 FastAPI (根据需要调整端口)
//       // 仅匹配 /api/ 前缀，防止像 /api-test 这类前端路由被错误代理到后端返回 404
//       '/api/': {
//         target: 'http://localhost:8000',
//         changeOrigin: true,
//         secure: false
//       }
//       ,
//       // 静态封面图片代理到后端，否则开发环境下直接访问 /static 会 404
//       '/static': {
//         target: 'http://localhost:8000',
//         changeOrigin: true,
//         secure: false
//       }
//     }
//   },
//   build: {
//     outDir: 'dist',
//     assetsDir: 'assets',
//     sourcemap: false,
//     rollupOptions: {
//       output: {
//         manualChunks: {
//           vendor: ['vue', 'vue-router', 'pinia'],
//           elementPlus: ['element-plus'],
//           utils: ['axios']
//         }
//       }
//     }
//   }
// })
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { fileURLToPath } from 'node:url'
import { dirname, resolve } from 'node:path'

// 由于 package.json 中使用 type: module，需要自己构造 __dirname
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src')
    }
  },
  css: {
    preprocessorOptions: {
      scss: {
        // 让所有 scss 文件自动拥有变量与混入
        additionalData: '@import "@/assets/styles/variables.scss";'
      }
    }
  },
  server: {
    port: 5174, // 修改前端开发服务器端口为 5174
    host: '0.0.0.0',
    strictPort: false,
    proxy: {
      // 前端调用 /api/* 时转发到后端 FastAPI (端口改为 8001)
      // 仅匹配 /api/ 前缀，防止像 /api-test 这类前端路由被错误代理到后端返回 404
      '/api/': {
        target: 'http://localhost:8001', // 修改为后端端口 8001
        changeOrigin: true,
        secure: false,
        // 可选：添加重写规则，确保路径正确
        rewrite: (path) => path.replace(/^\/api/, '')
      },
      // 静态封面图片代理到后端，端口改为 8001
      '/static': {
        target: 'http://localhost:8001', // 修改为后端端口 8001
        changeOrigin: true,
        secure: false
      },
      // 可选：添加 WebSocket 代理（如果需要）
      '/ws': {
        target: 'ws://localhost:8001',
        ws: true,
        changeOrigin: true
      }
    }
  },
  // 可选：添加预览服务器配置
  preview: {
    port: 5174,
    host: '0.0.0.0',
    proxy: {
      '/api/': {
        target: 'http://localhost:8001',
        changeOrigin: true,
        secure: false
      },
      '/static': {
        target: 'http://localhost:8001',
        changeOrigin: true,
        secure: false
      }
    }
  },
  build: {
    outDir: 'dist',
    assetsDir: 'assets',
    sourcemap: false,
    rollupOptions: {
      output: {
        manualChunks: {
          vendor: ['vue', 'vue-router', 'pinia'],
          elementPlus: ['element-plus'],
          utils: ['axios']
        }
      }
    }
  },
  // 可选：添加环境变量配置
  define: {
    'process.env': process.env
  }
})